package org.i1510.mflow.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

import org.i1510.common.bean.PageBean;
import org.i1510.common.utils.StringUtils;
import org.i1510.common.utils.web.ResultMapper;
import org.i1510.common.utils.web.WebUtils;
import org.i1510.mflow.dao.IMflowMainDao;
import org.i1510.mflow.po.MflowMain;
import org.i1510.mflow.po.MflowUser;
import org.i1510.mflow.service.IMflowMainService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/admin/mflowMain")
public class MflowMainController {
    private static final Logger logger = LoggerFactory.getLogger(MflowMainController.class);
    @Autowired
    private IMflowMainService iMflowMainService;
    @Autowired
    private IMflowMainDao iMflowMainDao;
    
    private ResultMapper mapper;
    
    @RequestMapping(value = "/jqList", method = RequestMethod.GET)
	@ResponseBody
	public String jqList(@ModelAttribute("limit") String limit,@ModelAttribute("offset") String offset,@ModelAttribute("search") String search,
					@ModelAttribute("fromDate") String fromDate,@ModelAttribute("toDate") String toDate,
					@Valid @ModelAttribute("mflowMain") MflowMain mflowMain,@Valid @ModelAttribute("pageBean") PageBean pageBean,BindingResult errors) {
		ResultMapper mapperRtn = ResultMapper.generateFailure();
		if(errors.hasErrors()){			
			mapperRtn = WebUtils.getMapper4Errors(errors);
		}else{
			Map conditions = new HashMap();
			conditions.put("fromDate", fromDate);
			conditions.put("toDate", toDate);
			if(!StringUtils.isStringEmpty(limit) && !StringUtils.isStringEmpty(offset) ){
				pageBean.setPageNo(String.valueOf(StringUtils.String2Integer(offset)/StringUtils.String2Integer(limit)+1));
				pageBean.setPageSize(limit);
			}
			List  wxTextMessages = iMflowMainService.getPage(mflowMain, pageBean,conditions);
			int totalCount =  iMflowMainService.getPageCount(mflowMain,conditions);
		
			mapperRtn.appendResult("total", totalCount);
			mapperRtn.appendResult("rows",wxTextMessages);		
		}		
		return mapperRtn.toJson();
	}
    /**
    *@Author Rambo
    *@Desc：保存对象
    *@param mflowMain
    *@param errors
    *@return TODO
    *@Version  MflowMainController.java,v 1.1 2013-11-15 下午4:20:56 
    */
    @RequestMapping(value = "/save", method = RequestMethod.POST)
    @ResponseBody
    public String save(HttpServletRequest request,@Valid @ModelAttribute("mflowMain") MflowMain mflowMain,BindingResult errors) {
        
        if(errors.hasErrors()){            
            mapper = WebUtils.getMapper4Errors(errors);
        }else{
            mflowMain.setDocStatus("10");
            mapper = iMflowMainService.save(mflowMain,request);
        }
        
        return mapper.toJson();
    }
    /**
    *@Author Rambo
    *@Desc：删除对象
    *@param docId
    *@param errors
    *@return TODO
    *@Version  MflowMainController.java,v 1.1 2014-9-2 下午3:38:17 
    */
    @RequestMapping(value = "/deleteX", method = RequestMethod.POST)
    @ResponseBody
    public String deleteX(@Valid @ModelAttribute("docId") String docId,BindingResult errors) {
        
        if(errors.hasErrors()){            
            mapper = WebUtils.getMapper4Errors(errors);
        }else{
            mapper = iMflowMainService.delete(docId);
        }
        
        return mapper.toJson();
    }
    /**
    *@Author Rambo
    *@Desc：查看对象
    *@param docId
    *@param errors
    *@return TODO
    *@Version  MflowMainController.java,v 1.1 2014-9-2 下午3:39:35 
    */
    @RequestMapping(value = "/view", method = RequestMethod.GET)
    @ResponseBody
    public String view(@Valid @ModelAttribute("docId") String docId,BindingResult errors) {
        ResultMapper mapperRtn = ResultMapper.generateFailure();
        if(errors.hasErrors()){            
            mapperRtn = WebUtils.getMapper4Errors(errors);
        }else{
            MflowMain mflowMain = iMflowMainService.findById(docId);
            mapperRtn = ResultMapper.generateSuccess();
            mapperRtn.appendResult("data", mflowMain);
        }        
        return mapperRtn.toJson();
    }
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    @ResponseBody
    public String list(@ModelAttribute("fromDate") String fromDate,@ModelAttribute("toDate") String toDate,@Valid @ModelAttribute("mflowMain") MflowMain mflowMain,@Valid @ModelAttribute("pageBean") PageBean pageBean,BindingResult errors) {
        ResultMapper mapperRtn = ResultMapper.generateFailure();
        if(errors.hasErrors()){            
            mapperRtn = WebUtils.getMapper4Errors(errors);
        }else{
            Map conditions = new HashMap();
            conditions.put("fromDate", fromDate);
            conditions.put("toDate", toDate);
            List  mflowMains = iMflowMainService.getPage(mflowMain, pageBean,conditions);
            int totalCount =  iMflowMainService.getPageCount(mflowMain,conditions);
            Map map = new HashMap();
            map.put("pageNo", pageBean.getPageNo());
            map.put("pageSize", pageBean.getPageSize());
            map.put("totalCount", totalCount);
            map.put("listData",mflowMains);
            
            mapperRtn = ResultMapper.generateSuccess();
            mapperRtn.appendResult("data", map);
        }        
        return mapperRtn.toJson();
    }
    /**
    *@Author Rambo
    *@Desc：状态修改
    *@param request
    *@param docId
    *@param docStatus
    *@param errors
    *@return TODO
    *@Version  CateController.java,v 1.1 2014-9-11 上午10:06:04 
    */
    @RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
    @ResponseBody
    public String updateStatus(HttpServletRequest request,@Valid @ModelAttribute("docId") String docId,@Valid @ModelAttribute("docStatus") String docStatus,BindingResult errors) {
        
        if(errors.hasErrors()){            
            mapper = WebUtils.getMapper4Errors(errors);
        }else{
            if(!StringUtils.isStringEmpty(docId)){
                MflowMain mflowMain = new MflowMain();
                
                mflowMain.setDocId(docId);
                mflowMain.setDocStatus(docStatus);
                mapper = iMflowMainService.save(mflowMain,request);
            }else{
                mapper = ResultMapper.generateFailure();
                mapper.appendResult("messages", "无法找到该ID!");
            }
            
        }
        
        return mapper.toJson();
    }
}